package com.hup.utils.io.batch.function;

import com.hup.utils.io.batch.ErrRespException;
import com.hup.utils.io.batch.RespListBatch;
import lombok.extern.log4j.Log4j2;

import java.util.ArrayList;

/**
 * 查询正在运行的所有服务[显示名-displayName]
 * @author hugan
 * @date 2020/1/21
 */
@Log4j2
public class NetStart implements RespListBatch<String> {

    @Override
    public String cmd() {
        return "net start";
    }

    @Override
    public String desc() {
        return "查询运行中的服务";
    }

    /**
     * @return 正在运行的服务的显示名
     */
    @Override
    public ArrayList<String> parse(ArrayList<String> lstResp) {
        int size = lstResp.size();
        log.debug("size={}", size);
        //log.info("[{}]", TextUtil.getLineWrap(lstResp));
        /*
        已经启动以下 Windows 服务:
        (空行)
           (空格)Application Information
           ...
        (空行)
        命令成功完成。
         */

        //第一行
        ErrRespException.doAssert(lstResp.get(0).startsWith("已经启动以下 Windows 服务"), this, lstResp);

        //第二行是空行
        ArrayList<String> res = new ArrayList<>();
        for (int i = 2; i < size; i++) {
            String displayName = lstResp.get(i).trim();
            if (displayName.isEmpty()) {
                //遇到空行后,就代表到达列表底部
                break;
            }
            res.add(displayName);
        }
        return res;
    }

}
